package config

import (
	"fmt"

	"github.com/sirupsen/logrus"
	"github.com/spf13/viper"
)

const (
	TimeFormat string = "2006-01-02 15:04:05.000"
)

var (
	Port          string
	JwtSigningKey string
	JwtExpireTime int64
)

type ReturnData struct {
	Status  int                    `json:"status"`
	Message string                 `json:"message`
	Data    map[string]interface{} `json:"data`
}

func NewReturnData() ReturnData {
	returndata := ReturnData{}
	returndata.Status = 200
	returndata.Data = make(map[string]interface{})
	return returndata
}

func init() {
	fmt.Println("项目开始初始化")
	initEnvironment()
	configLog(
		viper.GetString("LOG_LEVEL"),
	)
}

func initEnvironment() {
	//设置默认环境变量
	viper.SetDefault("LOG_LEVEL", "debug")
	viper.SetDefault("PORT", ":8080")
	viper.SetDefault("JWT_SIGN_KEY", "zyk")
	viper.SetDefault("JWT_EXPIRE_TIME", 120)
	//链接与之相同的系统环境变量
	viper.AutomaticEnv()
	//得到环境变量的值
	Port = viper.GetString("PORT")
	JwtSigningKey = viper.GetString("JWT_SIGN_KEY")   //获取jwt签名
	JwtExpireTime = viper.GetInt64("JWT_EXPIRE_TIME") //获取token过期时间
}

func configLog(logLevel string) {
	logrus.SetReportCaller(true) //设置输出报日志的文件名，以及文件行号
	logrus.SetFormatter(
		&logrus.JSONFormatter{
			TimestampFormat: TimeFormat,
		}) // 更改日志格式
	//设置日志等级
	switch logLevel {
	case "debug":
		logrus.SetLevel(logrus.DebugLevel)
	}
}
